package com.cy.pj.common.pool;

import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

/**
*创建一个对象池类型,然后此类型的对象交给spring管理
 * @Component此注解描述的对象可以交给spring去处理,表示这个对象的一个一般组件
 * 系统底层会通过反射技术创建Bean实例,并为Bean起一个名字
 *
 * 反射?Java中的一种高级特性,这组特性会借助一组API，获取运行时的类及其的成员，并进行操作.
 * 反射的最大优势?不能预知未来,但能驾驭未来
 *Java中的应用反射技术的起点是什么?获取Class对象(字节码对象)
 */
@Component
@Scope("singletion")//此注解用于设置bean对象的作用域，默认为singletion(单例),相同名字的bean实例在内存只能有一份
@Lazy//描述对象类型时表示延迟对象的创建,何时需要何时创建,尤其是一些大对象,短时间又不会用到我们可以采用这样的策略
//@Component("objPool")//描述bean的同时,给Bean起给的名字
public class ObjectPool {//默认bean对对象的名字为类名,然后首字母小写,例如objectPool
    public ObjectPool(){
        System.out.println("ObjectPool()");
    }
}//此类的配置在被加载到内存时,会将类的配置信息存储到Map<String,BeanDefinition>容器中
//早期创建类的实例:new ObjectPool()
//spring中为什么会使用反射创建对象,而不是直接new对象类型的方式呢?
